From: Quan Xu Date: Thu, 15 Jan 2015 09:21:52 +0000 (-0500) Subject: vTPM/TPM2: Unind group keys and sectors data on disk X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~3832 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22?a=commitdiff_plain;h=b1fee946d3f34aaef4e7a0cff445c4d941ffa955;p=xen.git vTPM/TPM2: Unind group keys and sectors data on disk Signed-off-by: Quan Xu Acked-by: Daniel De Graaf --- diff --git a/stubdom/vtpmmgr/disk_read.c b/stubdom/vtpmmgr/disk_read.c index 33aacdda46..e9dc20ff1d 100644 --- a/stubdom/vtpmmgr/disk_read.c +++ b/stubdom/vtpmmgr/disk_read.c @@ -67,6 +67,7 @@ static int find_group_key(struct mem_group *dst, const struct mem_tpm_mgr *parent) { int i, rc, rv = 1; + unsigned int olen; struct hash160 buf; struct disk_group_sealed_data sealed; @@ -88,7 +89,13 @@ static int find_group_key(struct mem_group *dst, TPM_pcr_digest(&buf, cfg->pcr_selection); if (memcmp(&buf, &cfg->digest_release, 20)) continue; - rc = TPM_disk_unseal(&sealed, sizeof(sealed), cfg); + + /*TPM 2.0 unbind | TPM 1.x unseal*/ + if (hw_is_tpm2()) + rc = TPM2_disk_unbind(&sealed, &olen, cfg); + else + rc = TPM_disk_unseal(&sealed, sizeof(sealed), cfg); + if (rc) continue; if (memcmp(&sealed.magic, DISK_GROUP_BOUND_MAGIC, 4)) @@ -112,9 +119,15 @@ static int find_group_key(struct mem_group *dst, static int parse_root_key(struct mem_tpm_mgr *dst, struct disk_seal_entry *src) { int rc; + unsigned int olen; struct disk_root_sealed_data sealed; - rc = TPM_disk_unseal(&sealed, sizeof(sealed), src); + /*TPM 2.0 unbind | TPM 1.x unseal*/ + if (hw_is_tpm2()) + rc = TPM2_disk_unbind(&sealed, &olen, src); + else + rc = TPM_disk_unseal(&sealed, sizeof(sealed), src); + if (rc) return rc;